<?php
App::uses('AppController', 'Controller');
/**
 * Mensagems Controller
 *
 * @property Mensagem $Mensagem
 */
class MensagemsController extends AppController {


	var $components = array('Email');
	
	public function beforeFilter(){
		parent::beforeFilter();
		$this->loadModel('User');
		$this->loadModel('NaoLido');
	}

	
	public function numero_nao_lidas(){
		return $this->User->numero_nao_lidas($this->usuarioAtual['id_users']);
	}


	public function add() {
		if ($this->request->is('post')) {
			$this->Mensagem->create();
			$this->request->data['Mensagem']['users_id'] = $this->usuarioAtual['id_users'];
			if ($this->Mensagem->save($this->request->data)) {
				if($this->Mensagem->salvaMensagemAnterior($this->request->data['Mensagem']['tarefas_id'], $this->Mensagem->id)){
					if($this->Mensagem->Tarefa->save(array('Tarefa'=>array('id_tarefas'=>$this->request->data['Mensagem']['tarefas_id'])))){
						$this->Mensagem->Tarefa->novasMensagens($this->request->data['Mensagem']['tarefas_id'], $this->Mensagem->id, $this->usuarioAtual);
						$this->emailMensagem($this->request->data);
						$this->Session->setFlash(__('A mensagem foi salva'));
						$this->redirect(array('controller'=>'tarefas', 'action' => 'view', $this->request->data['Mensagem']['tarefas_id']));
					}
					else {$this->Session->setFlash(__('ERRO'));}
				}
				else { $this->Session->setFlash(__('ERRO'));}
			} else {
				$this->Session->setFlash(__('Mensagem não salva. Por favor tente novamente!'));
			}
		}
		$users = $this->Mensagem->User->find('list');
		$tarefas = $this->Mensagem->Tarefa->find('list');
		$this->set(compact('users', 'tarefas'));
	}


	public function admin_add() {
		if ($this->request->is('post')) {
			$this->Mensagem->create();
			$this->request->data['Mensagem']['users_id'] = $this->usuarioAtual['id_users'];
			if ($this->Mensagem->save($this->request->data)) {
				if($this->Mensagem->salvaMensagemAnterior($this->request->data['Mensagem']['tarefas_id'], $this->Mensagem->id)){
					if($this->Mensagem->Tarefa->save(array('Tarefa'=>array('id_tarefas'=>$this->request->data['Mensagem']['tarefas_id'])))){
						$this->Mensagem->Tarefa->novasMensagens($this->request->data['Mensagem']['tarefas_id'], $this->Mensagem->id, $this->usuarioAtual);
						$this->emailMensagem($this->request->data);
						$this->Session->setFlash(__('The mensagem has been saved'));
						$this->redirect(array('controller'=>'tarefas', 'action' => 'view', $this->request->data['Mensagem']['tarefas_id']));
					}
					else {$this->Session->setFlash(__('ERRO'));}
				}
				else { $this->Session->setFlash(__('ERRO'));}
			} else {
				$this->Session->setFlash(__('The mensagem could not be saved. Please, try again.'));
			}
		}
		$users = $this->Mensagem->User->find('list');
		$tarefas = $this->Mensagem->Tarefa->find('list');
		$this->set(compact('users', 'tarefas'));
	}

	
	private function emailMensagem($dados){
		$projeto = $this->Mensagem->Tarefa->findByIdTarefas($dados['Mensagem']['tarefas_id']);
		$usuarios = $this->Mensagem->Tarefa->Projetos->usuariosDoProjetoEmail($projeto['Projetos']['id_projetos'], $this->usuarioAtual);
		foreach($usuarios as $key=>$item){
			$this->Email->novoEmail();
			$this->Email->assunto(__('Morbi - '.$projeto['Projetos']['nome'].' - Nova Mensagem'));
			$this->Email->destinatario(array($key=>$item));
			$this->Email->set('nome', $item);
			$this->Email->set('projeto', $projeto['Projetos']['nome']);
			$this->Email->set('autor', $this->usuarioAtual['nome']);
			$this->Email->set('tarefa', $projeto['Tarefa']['nome']);
			$this->Email->set('mensagem', $dados['Mensagem']['mensagem']);
			$this->Email->set('idTarefa', $dados['Mensagem']['tarefas_id']);
//			$this->Email->set('hashUser', 1);
//			$this->Email->set('hashMensagem', 99);
			$this->Email->template('mensagem', 'default');
			$this->Email->mensagem('', $key);
		}
	}
	
	public function nao_lidas(){
		$this->set('mensagens', $this->NaoLido->mensagensNaoLidasPorProjeto($this->usuarioAtual['id_users']));
		$this->set('projetos', $this->Mensagem->Tarefa->Projetos->find('list'));
		$this->set('tarefas', $this->Mensagem->Tarefa->find('list'));;
	}
	
	public function admin_nao_lidas(){
		$this->nao_lidas();
		$this->render('nao_lidas');
	}
}
